home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 26
/
Cream of the Crop 26.iso
/
os2
/
octa209b.zip
/
octave-2.09
/
DLFCN.ZIP
/
dlfcn
/
octave
/
MArray-defs.h
< prev
next >
Wrap
Text File
|
1997-08-20
|
1KB
|
68 lines
// Nothing like a little CPP abuse to brighten everyone's day. Would
// have been nice to do this with template functions but as of 2.5.x,
// g++ seems to fail to resolve them properly.
#define DO_VS_OP(OP) \
int l = a.length (); \
T *result = 0; \
if (l > 0) \
{ \
result = new T [l]; \
const T *x = a.data (); \
for (int i = 0; i < l; i++) \
result[i] = x[i] OP s; \
}
#define DO_SV_OP(OP) \
int l = a.length (); \
T *result = 0; \
if (l > 0) \
{ \
result = new T [l]; \
const T *x = a.data (); \
for (int i = 0; i < l; i++) \
result[i] = s OP x[i]; \
}
#define DO_VV_OP(OP) \
T *result = 0; \
if (l > 0) \
{ \
result = new T [l]; \
const T *x = a.data (); \
const T *y = b.data (); \
for (int i = 0; i < l; i++) \
result[i] = x[i] OP y[i]; \
}
#define NEG_V \
int l = a.length (); \
T *result = 0; \
if (l > 0) \
{ \
result = new T [l]; \
const T *x = a.data (); \
for (int i = 0; i < l; i++) \
result[i] = -x[i]; \
}
#define DO_VS_OP2(OP) \
int l = a.length (); \
if (l > 0) \
{ \
T *tmp = a.fortran_vec (); \
for (int i = 0; i < l; i++) \
tmp[i] OP s; \
}
#define DO_VV_OP2(OP) \
do \
{ \
T *a_tmp = a.fortran_vec (); \
const T *b_tmp = b.data (); \
for (int i = 0; i < l; i++) \
a_tmp[i] += b_tmp[i]; \
} \
while (0)